<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Requirements on read and write operations</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../../index.html" title="Asio">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="asynchronous_operations.html" title="Requirements on asynchronous operations">
<link rel="next" href="synchronous_socket_operations.html" title="Requirements on synchronous socket operations">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="asio C++ library" width="250" height="60" src="../../asio.png"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="asynchronous_operations.html"><img src="../../prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../home.png" alt="Home"></a><a accesskey="n" href="synchronous_socket_operations.html"><img src="../../next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="asio.reference.read_write_operations"></a><a class="link" href="read_write_operations.html" title="Requirements on read and write operations">Requirements on
      read and write operations</a>
</h3></div></div></div>
<p>
        A <span class="emphasis"><em>read operation</em></span> is an operation that reads data into
        a mutable buffer sequence argument of a type meeting <a class="link" href="MutableBufferSequence.html" title="Mutable buffer sequence requirements"><code class="computeroutput">MutableBufferSequence</code></a>
        requirements. The mutable buffer sequence specifies memory where the data
        should be placed. A read operation shall always fill a buffer in the sequence
        completely before proceeding to the next.
      </p>
<p>
        A <span class="emphasis"><em>write operation</em></span> is an operation that writes data from
        a constant buffer sequence argument of a type meeting <a class="link" href="ConstBufferSequence.html" title="Constant buffer sequence requirements"><code class="computeroutput">ConstBufferSequence</code></a>
        requirements. The constant buffer sequence specifies memory where the data
        to be written is located. A write operation shall always write a buffer in
        the sequence completely before proceeding to the next.
      </p>
<p>
        If a read or write operation is also an <a class="link" href="asynchronous_operations.html" title="Requirements on asynchronous operations">asynchronous
        operation</a>, the operation shall maintain one or more copies of the
        buffer sequence until such time as the operation no longer requires access
        to the memory specified by the buffers in the sequence. The program shall
        ensure the memory remains valid until:
      </p>
<p>
        &#8212; the last copy of the buffer sequence is destroyed, or
      </p>
<p>
        &#8212; the completion handler for the asynchronous operation is invoked,
      </p>
<p>
        whichever comes first.
      </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2003-2018 Christopher M. Kohlhoff<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="asynchronous_operations.html"><img src="../../prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../home.png" alt="Home"></a><a accesskey="n" href="synchronous_socket_operations.html"><img src="../../next.png" alt="Next"></a>
</div>
</body>
</html>
